package middleware

import (
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

var Logger *zap.Logger

// InitLogger 初始化日志记录器，并返回一个指向配置好的 zap.Logger 的指针。
// 该函数使用 zap 库来创建一个适合生产环境的日志记录器，配置日志级别为 Debug，
// 时间编码格式为 ISO8601，输出路径包括标准输出和日志文件。
// 返回值为 *zap.Logger，即指向配置好并初始化的日志记录器的指针。
func InitLogger() *zap.Logger {
	// 创建一个适合生产环境的新日志配置。
	config := zap.NewProductionConfig()

	// 设置日志级别为 Debug，这样可以记录调试及更高优先级的日志信息。
	config.Level = zap.NewAtomicLevelAt(zap.DebugLevel)

	// 配置时间编码格式为 ISO8601，使得日志中的时间信息更具可读性和标准化。
	config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder

	// 设置日志的输出路径，包括标准输出和一个日志文件，以便于同时在控制台和文件中查看日志。
	config.OutputPaths = []string{"stdout", "logs/app.log"}

	// 根据配置构建日志记录器。这里忽略了错误处理，因为在初始化日志记录器时，错误处理可能会很有限。
	log, _ := config.Build()

	// 将构建的日志记录器赋值给全局变量 Logger，以便于在整个应用程序中使用。
	Logger = log

	// 返回配置好的日志记录器，允许调用者使用它来记录日志。
	return log
}
